home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / trek.arc / TREKINST.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-03-24  |  15.5 KB  |  321 lines

  1. 1  ' *** UNIVERSITY OF TEXAS     S*U*P*E*R   S*T*A*R   T*R*E*K
  2. 2  ' *** MS-BASIC 1.1 VERSION    JUNE 1, 1983      Ver.Mod 1.0
  3. 10  '-------------------------------------------------------------------------'
  4. 11  '                        "Star Trek" The Game                             '
  5. 12  '                                 by                                      '
  6. 13  '                  David Matuszek and Paul Reynolds                       '
  7. 14  '                                                                         '
  8. 15  '                 Adapted from the Unversity of Texas                     '
  9. 16  '                       program Super Star Trek                           '
  10. 17  '               for the IBM-PC by Frank M. Ramaekers Jr.                  '
  11. 18  '                                                                         '
  12. 19  '      Permission  is  hereby granted for the  copying,  distribution,    '
  13. 20  '  modification  and use of this program and associated  documentation    '
  14. 21  '  for  recreational  purposes, provided that all  references  to  the    '
  15. 22  '  authors  are retained.  However, permission is not and will not  be    '
  16. 23  '  granted for the sale or promotional use of this program or  program    '
  17. 24  '  documentation,  or for use in any situation in which profit may  be    '
  18. 25  '  considered  an objective, since it is the desire of the authors  to    '
  19. 26  '  respect the copyrights of the originators of Star Trek.                '
  20. 27  '-------------------------------------------------------------------------'
  21. 100  DEFINT A-Z
  22. 110  COMMON SP,FIN,D!,RK,RC,RB,RR!,RT!,KST,KB,KK,KC,G(),CX(),CY(),BX(),BY()
  23. 120  COMMON NS(),P(),UX,UY,RS,KR,RR,KS,CR,KP,Q(),KX(),KY(),KP!(),KA!(),KD!()
  24. 130  COMMON NK,NB,NR!,NC,NT!,NST,NE!,NSH!,NT,NL!,ND!,E!,S!,SU,C,T,S$
  25. 140  COMMON QX,QY,SX,SY,W!,WS!,L!,D!(),LN,S,P$,DS!,DR!,H!,T!,BX,BY,DF!
  26. 150  COMMON HK,KC,CS,NH,NKN,S(),F!(),GO,G1,A,JI,R,AD,DF!,SC,TX,TY,ND,PX,PY,O
  27. 160  COMMON LD,P,MN,NP,HE,HS,NZ,HR,CF,SN,CG,SB,SE,CP!,CT,DB,BAX,BAY,CR!(),DO,IN$
  28. 165  KEY OFF
  29. 170  OPEN "R",#1,"TREKMSGS.DAT",73:' TESTING ONLY
  30. 180  FIELD #1,73 AS TMSG$
  31. 190  GOSUB 45000:' initial instructions
  32. 195  GOTO 225
  33. 200  CLS:MSG$="'Star Trek' The Game":R=1:GOSUB 40000
  34. 210  MSG$="Instructions":R=2:GOSUB 40000
  35. 220  PRINT:PRINT:PRINT:PRINT
  36. 225  PRINT "Enter the command you wish additional information on:"
  37. 230  PRINT:FOR I=8 TO 13:GET #1,I:PRINT TMSG$:NEXT I
  38. 250  PRINT:PRINT "Command: ";:CR=CSRLIN:CC=POS(0)
  39. 255  LOCATE ,,1:GOSUB 50100:LOCATE ,,0:GOSUB 50000:IF BDKEY$="A" THEN 260
  40. 257  LOCATE 25,2:COLOR 26:PRINT "Invalid command.  To play game type 'PLAY' and press ENTER.";:COLOR 7:BEEP:LOCATE CR,CC:GOTO 255
  41. 260  GOSUB 50140:IF I=0 THEN IF BDS$="PLAY" AND S$<>"" THEN CHAIN "trekmain" ELSE 257
  42. 263  GOSUB 30000
  43. 264  PRINT I;
  44. 265  ON I GOSUB 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000,12000,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23000,24000,25000,26000,27000,28000,29000
  45. 270  R=25:MSG$="Press any key to return to Command Menu":COLOR 26:GOSUB 40000:COLOR 7
  46. 280  I$=INKEY$:IF I$="" THEN 280 ELSE 200
  47. 999  CLOSE #1:STOP:' TESTING ONLY
  48. 1000  'chart
  49. 1010  LOCATE 1,25:PRINT "CHART";:LOCATE 2,25:PRINT "C";:LOCATE 3,25:PRINT "None";:LOCATE 4,25:PRINT "Map of the galaxy from information obtained from":LOCATE 5,27:PRINT "long-range sensors.";
  50. 1020  LOCATE 6,1
  51. 1025  PRINT "    ";:FOR J=1 TO 8:PRINT "  "J;:NEXT J:PRINT
  52. 1030  PRINT "   -----------------------------------------"
  53. 1035  PRINT "   :"
  54. 1040  PRINT " 1 :  ...  ...  ...  ...  ...  ...  ...  ...
  55. 1045  PRINT "   :"
  56. 1050  PRINT " 2 :  ...  .1.  ...  ...  ...  ...  ...  ...
  57. 1055  PRINT "   :"
  58. 1060  PRINT " 3 :  ...  ...  ...  ...  ...  ...  ...  ...
  59. 1065  PRINT "   :"
  60. 1070  PRINT " 4 :  ... 1000  ...  ...  ...  ...  ...  ...
  61. 1075  PRINT "   :"
  62. 1080  PRINT " 5 :  ...  ...  ...  ...  ...  ...  ...  ...
  63. 1085  PRINT "   :"
  64. 1090  PRINT " 6 :  .1.  ...  804  211    6  ...  ...  ...
  65. 1095  PRINT "   :"
  66. 1100  PRINT " 7 :  ...  ...    8  104  201  ...  ...  ...
  67. 1105  PRINT "   :"
  68. 1110  PRINT " 8 :  ...  ...  208   17    4  ...  ...  ...
  69. 1115  PRINT "   :";
  70. 1200  LOCATE 7,52:PRINT "Legend";
  71. 1205  LOCATE 9,48:PRINT "... - unscanned quadrant";
  72. 1210  LOCATE 10,48:PRINT ".1. - unscanned quadrant w/ base";
  73. 1215  LOCATE 11,47:PRINT "1000 - quadrant contains Supernova";
  74. 1217  LOCATE 13,52:PRINT "Scanned quadrants:";
  75. 1220  LOCATE 14,48:PRINT "XYZ";
  76. 1230  LOCATE 15,50:PRINT "X - number of Klingons in":LOCATE 16,56:PRINT "quadrant";
  77. 1240  LOCATE 17,50:PRINT "Y - base in quadrant (1)"
  78. 1250  LOCATE 18,50:PRINT "Z - number of stars in quadrant";
  79. 1999  RETURN
  80. 2000  'crystals
  81. 2010  LOCATE 1,25:PRINT "CRYSTALS";:LOCATE 2,25:PRINT "CR";:LOCATE 3,25:PRINT "Dilithium Crystals, Condition Yellow";:LOCATE 4,25:PRINT "Attempt to load raw dilithium crystals into the ship's":LOCATE 5,27:PRINT "power system.";
  82. 2020  LOCATE 7,5
  83. 2030  PRINT "Dilithium crystals are obtained from mining a planet's surface.  To mine":PRINT "dilithium crystals, you must:"
  84. 2040  LOCATE 10,20:PRINT "1)  achieve standard orbit (ORBIT)."
  85. 2050  LOCATE ,20:PRINT "2)  get down to planet surface (TRANSPORT or SHUTTLE)."
  86. 2060  LOCATE ,20:PRINT "3)  mine for dilithium crystals (MINE)."
  87. 2070  LOCATE ,20:PRINT "4)  get back to ship (TRANSPORT OR SHUTTLE)."
  88. 2999  RETURN
  89. 3000  'dock
  90. 3010  LOCATE 1,25:PRINT "DOCK";:LOCATE 2,25:PRINT "D";:LOCATE 3,25:PRINT "adjacent to a Starbase";:LOCATE 4,25:PRINT "Dock to a Starbase to replenish supplies and make":LOCATE 5,27:PRINT "repairs to the ship.";
  91. 3020  LOCATE 7,5
  92. 3030  PRINT "Docking will replenish your energy, shield energy, photon torpedoes and":PRINT "life support reserves.  When docked repairs can be made at a much excelerated":PRINT "rate.  Starbase shields provide additional protection when docked."
  93. 3999  RETURN
  94. 4000  'damages
  95. 4010  LOCATE 1,25:PRINT "DAMAGES";:LOCATE 2,25:PRINT "DA";:LOCATE 3,25:PRINT "None";:LOCATE 4,25:PRINT "Request a damage report.
  96. 4015  LOCATE 8,24:PRINT "Sample Damage Report:"
  97. 4020  LOCATE 12,20:PRINT "DEVICE                 -REPAIR TIMES-"
  98. 4030  LOCATE 13,20:PRINT "                    IN FLIGHT    DOCKED"
  99. 4040  LOCATE 15,20:PRINT "Phasers                  0.45      0.11"
  100. 4050  LOCATE 16,20:PRINT "Photon tubes             0.52      0.13"
  101. 4060  LOCATE 17,20:PRINT "Transporter              0.52      0.13"
  102. 4070  LOCATE 18,20:PRINT "Shield Control           0.43      0.11"
  103. 4999  RETURN
  104. 5000  'impulse
  105. 5010  LOCATE 1,25:PRINT "IMPULSE [MANUAL/AUTOMATIC] [a b [c d]]";:LOCATE 2,25:PRINT "I [M/A] [a b [c d]]";:LOCATE 3,25:PRINT "Impulse engines, Computer for automatic movement";:LOCATE 4,25:PRINT "Move using impulse power.
  106. 5020  LOCATE 7,5
  107. 5030  PRINT "Impulse is one of two movement commands.  Movement under impulse power is";:PRINT "extremely slow, but uses little energy.  They require 20.0 units of energy to"
  108. 5040  PRINT "engage and 100.0 units per quadrant.  The speed under Impulse power is only":PRINT "0.95 stardates per sector.  They are very useful when the Warp engines are"
  109. 5050  PRINT "damaged.
  110. 5060  PRINT:PRINT "See MOVE for additional information.
  111. 5999  RETURN
  112. 6000  'lrscan
  113. 6010  LOCATE 1,25:PRINT "LRSCAN";:LOCATE 2,25:PRINT "L";:LOCATE 3,25:PRINT "Long-range sensors";:LOCATE 4,25:PRINT "To obtain information on adjacent quadrants.
  114. 6020  LOCATE 7,1
  115. 6024  PRINT "  Sample Long-range sensor scan:":PRINT
  116. 6025  PRINT "Long range scan for quadrant 1 - 1 .":PRINT
  117. 6030  PRINT "-1   -1   -1"
  118. 6040  PRINT "-1  414    9"
  119. 6050  PRINT "-1  204 1000"
  120. 6060  LOCATE 9,54:PRINT "Legend";
  121. 6065  LOCATE 11,40:PRINT "  -1 - edge of galaxy";
  122. 6070  LOCATE 13,40:PRINT "1000 - quadrant containing a Supernova";
  123. 6075  LOCATE 15,40:PRINT " XYZ = X - number of Klingons in quadrant
  124. 6090  LOCATE 16,40:PRINT "       Y - base in quadrant (1 or 0)"
  125. 6095  LOCATE 17,40:PRINT "       Z - number of stars in quadrant"
  126. 6999  RETURN
  127. 7000  'move
  128. 7010  LOCATE 1,25:PRINT "MOVE [MANUAL/AUTOMATIC] [a b [c d]]";:LOCATE 2,25:PRINT "M [M/A] [a b [c d]]";:LOCATE 3,25:PRINT "Warp engines, Computer for automatic movement";
  129. 7015  LOCATE 4,25:PRINT "To move from one location to another.";
  130. 7020  LOCATE 7,5
  131. 7030  PRINT "Move is one of the two movement commands.  Time used and fuel consumtion":PRINT "depends on the Warp factor.  Warp factor ranges from 1 to 10.  At Warp factor":PRINT "ten little time is used, but a large amount of energy is consumed."
  132. 7040  PRINT:PRINT "    Manual format:  M M delta-X delta-Y"
  133. 7060  PRINT
  134. 7070  PRINT "    Examples:  M M 1.1 0   = moves "CHR$(26)" one quadrant plus one sector.
  135. 7080  PRINT "               M M -.3 0   = moves "CHR$(27)" three sectors.
  136. 7100  PRINT "                    0  .7  = moves "CHR$(25)" seven sectors.
  137. 7120  PRINT "                    0 -5.3 = moves "CHR$(24)" five quadrants plus three sectors.
  138. 7200  PRINT:PRINT "Automatic formats:  M A dest-sect-Y dest-sect-X":PRINT "                    M A dest-quad-Y dest-quad-X dest-sect-Y dest-sect-X"
  139. 7210  PRINT
  140. 7220  PRINT "    Examples:  M A 4 5     = moves to sector 4 - 5.
  141. 7230  PRINT "               M A 6 7 3 2 = moves to quadrant 6 - 7 sector 3 - 2.
  142. 7999  RETURN
  143. 8000  'mine
  144. 8010  LOCATE 1,25:PRINT "MINE";:LOCATE 2,25:PRINT "MI";:LOCATE 3,25:PRINT "Must be on planet surface";
  145. 8015  LOCATE 4,25:PRINT "To obtain crystals for emergency situations.";
  146. 8020  LOCATE 7,5
  147. 8030  PRINT "In order to mine for dilithium crystals, you must be on the planet surface.":PRINT "There are two ways to get to the planet surface.  First, you could use the":PRINT "transporter.  Secondly, the shuttle craft can be used for transportation.";
  148. 8040  PRINT:PRINT "For more information see TRANSPORT, SHUTTLE and CRYSTALS."
  149. 8999  RETURN
  150. 9000  'orbit
  151. 9010  LOCATE 1,25:PRINT "ORBIT";:LOCATE 2,25:PRINT "O";:LOCATE 3,25:PRINT "Must have sufficient energy.";
  152. 9015  LOCATE 4,25:PRINT "To prepare to mine for dilithium crystals.";
  153. 9020  LOCATE 7,5
  154. 9030  PRINT "Entering standard orbit is the first step in mining dilithium crystals.":PRINT "Next, you must get down to the planet surface.  Two meathods are available":PRINT "transporter and shuttle craft.";
  155. 9040  PRINT:PRINT "For more information see TRANSPORT, SHUTTLE and CRYSTALS."
  156. 9999  RETURN
  157. 10000  'phasers
  158. 10010  LOCATE 1,25:PRINT "PHASERS [MANUAL/AUTOMATIC] energy {NO}";:LOCATE 2,25:PRINT "P [M/A] energy {N}";:LOCATE 3,25:PRINT "Ship energy, Phasers, Shield control if shields up.";
  159. 10015  LOCATE 4,25:PRINT "Attack enemy in battle.";
  160. 10020  LOCATE 7,5
  161. 10030  PRINT "Phasers  utilize  the  ships  energy to attack the  enemy.   Automatic,  spreads";:PRINT "phasers  to  all (or as many as possible) enemies in your  quadrant.   You  will";
  162. 10035  PRINT "be prompted in manual phasers for energy to be spent on each enemy.
  163. 10040  PRINT:PRINT TAB(5);"Energy is only allowed on the command line for automatic phasers."
  164. 10050  PRINT TAB(5);"The optional operand (NO) will not raise your shields after phasers have been":PRINT "fired using high-speed shield control."
  165. 10999  RETURN
  166. 11000  'photons
  167. 11010  LOCATE 1,25:PRINT "PHOTONS [number] [a b c d e f]";:LOCATE 2,25:PRINT "PHO [number] [a b c d e f]";:LOCATE 3,25:PRINT "Photon tubes, cannot be fired through starbase shields.";
  168. 11015  LOCATE 4,25:PRINT "Attack enemy in battle.";
  169. 11020  LOCATE 7,5
  170. 11030  PRINT "Photon torpedoes are fired at a specific enemy.  They are less accurate":PRINT "through either the ship or starbase shields.  You start with 10 torpedoes.":PRINT "After docking you receive a fresh supply of 10 torpedoes.":
  171. 11040  PRINT TAB(5);"Rarely but sometimes, a photon may misfire.  That torpedoe and the":PRINT "remainder of the burst will be aborted.  Damage may also result from a":PRINT " misfire."
  172. 11999  RETURN
  173. 12000  'planets
  174. 12010  LOCATE 1,25:PRINT "PLANETS";:LOCATE 2,25:PRINT "PL";:LOCATE 3,25:PRINT "None";
  175. 12020  LOCATE 4,25:PRINT "Summary of information obtained from sensors.
  176. 12030  LOCATE 7,5
  177. 12040  PRINT TAB(5);"Information obtained through sensors is retained during your battle.  The":PRINT "PLANET command displays this information in summary form.  Below is a sample":PRINT "readout:"
  178. 12050  PRINT:PRINT:PRINT "Spock:  Planet report follows, Captain."
  179. 12060  PRINT
  180. 12070  PRINT " 3 - 3 class N planet no dilithium crystals present"
  181. 12080  PRINT " 8 - 6 class M planet dilithium crystals present"
  182. 12090  PRINT " 7 - 2 class O planet no dilithium crystals present"
  183. 12999  RETURN
  184. 13000  'srscan
  185. 13010  LOCATE 1,25:PRINT "SRSCAN {NO}";:LOCATE 2,25:PRINT "S {N}";:LOCATE 3,25:PRINT "Short range scanners";
  186. 13020  LOCATE 4,25:PRINT "Display of current quadrant.
  187. 13030  LOCATE 7,5
  188. 13040  PRINT TAB(5);"This command displays current information about the current quadrant."
  189. 13042  PRINT "The optional operand (NO) suppresses the status display.  Below is a sample":PRINT "readout with the status display.
  190. 13045  LOCATE 12,1
  191. 13050  PRINT "   1 2 3 4 5 6 7 9 10"
  192. 13060  PRINT " 1 . . . . . . . . .      Stardate........ 2034.1";
  193. 13070  PRINT " 2 . . . . K . . K .      Condition.......Green";
  194. 13080  PRINT " 3 . . . . . . . . .      Position........ 2 - 6 , 5 - 9";
  195. 13090  PRINT " 4 . .   . C . * . .      Life support....Active";
  196. 13100  PRINT " 5 . . . . . . . . .      Warp factor..... 5.0";
  197. 13110  PRINT " 6 . . . . . . . . .      Energy..........5000.0";
  198. 13120  PRINT " 7 . . . * . . . . .      Torpedoes.......10";
  199. 13130  PRINT " 8 . . . . . E . . .      Shields.........Down,100.0%";
  200. 13140  PRINT " 9 S . . B . . . . .      Klingons left... 30";
  201. 13150  PRINT "10 . . . . . . . . .      Time left.......28.0";
  202. 13200  LOCATE 11,60:PRINT "Legend:"
  203. 13210  LOCATE 13,60:PRINT " E = Enterprise"
  204. 13220  LOCATE 14,60:PRINT " F = Farie Queene"
  205. 13230  LOCATE 15,60:PRINT " K = Klingon"
  206. 13240  LOCATE 16,60:PRINT " C = Commander
  207. 13250  LOCATE 17,60:PRINT " S = SUPER-Commander
  208. 13260  LOCATE 18,60:PRINT " B = Star base
  209. 13270  LOCATE 19,60:PRINT " * = Star
  210. 13280  LOCATE 20,60:PRINT "   = Black hole
  211. 13290  LOCATE 21,60:PRINT " ? = Thing
  212. 13300  LOCATE 21,60:PRINT " . = Empty sector
  213. 13999  RETURN
  214. 14000  'sensors
  215. 14010  LOCATE 1,25:PRINT "SENSORS";:LOCATE 2,25:PRINT "SE";:LOCATE 3,25:PRINT "Short range scanners";
  216. 14020  LOCATE 4,25:PRINT "Display information on planets in the current quadrant.
  217. 14030  LOCATE 7,5
  218. 14040  PRINT TAB(5);"This command displays information on planets in the current quadrant."
  219. 14050  PRINT "Below is a sample readout of this command.
  220. 14100  LOCATE 11,1
  221. 14110  PRINT "Planet at 3 - 8 is of class N.
  222. 14120  PRINT "    Readings indicate no dilithium crystals present.
  223. 14999  RETURN
  224. 15000  'shields
  225. 15010  LOCATE 1,25:PRINT "SHIELDS [UP DOWN TRANSFER] [nnnn]";:LOCATE 2,25:PRINT "SH [U D T] [nnnn]";:LOCATE 3,25:PRINT "Shields and Energy.";
  226. 15020  LOCATE 4,25:PRINT "Raise/lower shields or transfer energy to/from engines.
  227. 15030  LOCATE 7,5
  228. 15040  PRINT TAB(5);"This command raises or lowers the shields.  In addition, the shields can
  229. 15050  PRINT "be drained or supplemented to/from the ships engines.
  230. 15999  RETURN
  231. 16000  ' shuttle
  232. 16010  LOCATE 1,25:PRINT "SHUTTLE";:LOCATE 2,25:PRINT "SHU";:LOCATE 3,25:PRINT "Suttle craft, in orbit around planet
  233. 16020  LOCATE 4,25:PRINT "Transport mining party to/from ship from/to planet.
  234. 16030  LOCATE 7,5
  235. 16040  PRINT TAB(5);"This command will transport a mining party to the planet surface.  You
  236. 16050  PRINT "can then mine dilithum crystals.  Then, this command will return to you to the"
  237. 16060  PRINT "Enterprise.
  238. 16999  RETURN
  239. 17000  'status
  240. 17999  RETURN
  241. 18000  'transport
  242. 18999  RETURN
  243. 19000  'request
  244. 19999  RETURN
  245. 20000  'rest
  246. 20999  RETURN
  247. 21000  'warp
  248. 21999  RETURN
  249. 22000  'abandon
  250. 22999  RETURN
  251. 23000  'deathray
  252. 23999  RETURN
  253. 24000  'destruct
  254. 24999  RETURN
  255. 25000  'help
  256. 25999  RETURN
  257. 26000  'terminate
  258. 26999  RETURN
  259. 27000  'command
  260. 27999  RETURN
  261. 28000  'freeze
  262. 28999  RETURN
  263. 29000  'thaw
  264. 29999  RETURN
  265. 30000  ' template
  266. 30010  CLS:LOCATE 1,1:COLOR 15:PRINT "Command format:";
  267. 30020  LOCATE 2,1:PRINT "Minimum abbreviation:";
  268. 30030  LOCATE 3,1:PRINT "Dependencies:";
  269. 30040  LOCATE 4,1:PRINT "Function performed:";
  270. 30999  COLOR 7:RETURN
  271. 40000  LOCATE R,(80-LEN(MSG$))/2:PRINT MSG$;:RETURN
  272. 45000  ' initial instructions
  273. 45010  CLS:MSG$="'Star Trek' The Game":R=1:GOSUB 40000
  274. 45020  MSG$="Instructions":R=2:GOSUB 40000
  275. 45030  LOCATE 4,1,0
  276. 45040  PRINT TAB(5);"Commands  may  be  entered any time you see  the  'Command:'  prompt.   Most";:PRINT "commands and operands can be abbreviated with a single letter.  A comma or space";
  277. 45050  PRINT "must  separate  commands and operands.   Numeric operands are  accepted  with  a";:PRINT "decimal point and/or a leading sign."
  278. 45055  PRINT:PRINT TAB(5);"The  detailed  instructions of a command contains an  item  called  'Command";:PRINT "format'.   An  item on this line containing a set of [ ]  are  optional  on  the";
  279. 45057  PRINT "command.   There  will be a prompt for any required item if it was not  supplied";:PRINT "on the command line.  A set of { } brackets signify an optional  item.  If it is";
  280. 45058  PRINT "is omitted, there will ";:COLOR 1:PRINT "not";:COLOR 7:PRINT " be a prompt for that item."
  281. 45098  PRINT
  282. 45099  RETURN
  283. 50000  ' break down IN$
  284. 50005  IF LEN(IN$)=0 THEN BDKEY$="*":RETURN
  285. 50010  BDB$=LEFT$(IN$,1):IF BDB$<>" " THEN 50015 ELSE IN$=RIGHT$(IN$,LEN(IN$)-1):GOTO 50005
  286. 50015  BDS$=""
  287. 50020  IF BDB$>="A" AND BDB$<="Z" THEN 50070
  288. 50025  ' numeric
  289. 50030  IF BDB$="-" OR BDB$="+" THEN IN$=RIGHT$(IN$,LEN(IN$)-1):BDF=VAL(BDB$+"1") ELSE BDF=1
  290. 50035  BDKEY$="I"
  291. 50040  IF LEN(IN$)=0 THEN 50055
  292. 50045  BDB$=LEFT$(IN$,1):IF (BDB$<"0" AND BDB$<>".") OR BDB$>"9" THEN 50055 ELSE BDS$=BDS$+BDB$:IN$=RIGHT$(IN$,LEN(IN$)-1):IF BDB$="." THEN BDKEY$="F"
  293. 50050  GOTO 50040
  294. 50055  IF LEN(BDS$)=0 THEN BDKEY$="*":RETURN
  295. 50060  IF BDKEY$="I" THEN BDI=VAL(BDS$)*BDF ELSE BDF!=VAL(BDS$)*BDF
  296. 50065  RETURN
  297. 50070  ' alpha
  298. 50075  IF LEN(IN$)=0 THEN 50085
  299. 50080  BDB$=LEFT$(IN$,1):IF BDB$=" " THEN 50085 ELSE BDS$=BDS$+BDB$:IN$=RIGHT$(IN$,LEN(IN$)-1):GOTO 50075
  300. 50085  IF LEN(BDS$)=0 THEN BDKEY$="*":RETURN
  301. 50090  BDKEY$="A"
  302. 50095  RETURN
  303. 50100  ' input IN$
  304. 50105  IN$=""
  305. 50110  I$=INKEY$:IF I$="" THEN 50110 ELSE IF LEN(I$)=2 THEN BEEP:GOTO 50110
  306. 50115  IF I$=CHR$(13) THEN RETURN:' PRINT:RETURN
  307. 50120  IF I$=CHR$(8) THEN IF LEN(IN$)<>0 THEN IN$=LEFT$(IN$,LEN(IN$)-1):PRINT CHR$(29);" ";CHR$(29);:GOTO 50110 ELSE BEEP:GOTO 50110
  308. 50125  IF I$<" " THEN BEEP:GOTO 50010
  309. 50130  IF I$>="a" AND I$<="z" THEN I$=CHR$(ASC(I$)-32)
  310. 50135  IN$=IN$+I$:PRINT I$;:GOTO 50110
  311. 50140  ' GET COMMAND
  312. 50145  ' try match on long commands
  313. 50150  RESTORE 50185:FOR I=22 TO 29:READ COMMAND$:IF COMMAND$=BDS$ THEN 50160 ELSE NEXT I
  314. 50155  RESTORE 50165:FOR I=1 TO 21:READ COMMAND$:IF LEFT$(COMMAND$,LEN(BDS$))=BDS$ THEN 50160 ELSE NEXT I:I=0
  315. 50160  COMM=I:RETURN
  316. 50165  DATA "CHART","CRYSTALS","DOCK","DAMAGES","IMPULSE","LRSCAN","MOVE","MINE"
  317. 50170  DATA "ORBIT","PHASERS","PHOTONS","PLANETS"
  318. 50175  DATA "SRSCAN","SENSORS","SHIELDS","SHUTTLE","STATUS","TRANSPORT"
  319. 50180  DATA "REQUEST","REST","WARP"
  320. 50185  DATA "ABANDON","DEATHRAY","DESTRUCT","HELP","TERMINATE","COMMAND","FREEZE","THAW"
  321.